

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<script type="text/javascript" src="helpman_topicinit.js"></script>

<title>Parameterized Classes (Templates) [Enterprise Architect User Guide]</title>

<meta name="keywords" content="Enterprise Architect, Sparx Systems, UML, Class,Class Parameterized Classes (Templates),Template,Template Parameterized Classes,Template Instantiated,Parameterized Classes (Templates),Instantiated Template">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<link type="text/css" href="default.css" rel="stylesheet" />
<style type="text/css">
  A, A:Visited
  {
    color: #00F;
  }

  A:Active, A:Hover
  {
    color: #F00;
  }

  OL
  {
    margin: 5px 0 5px 48px;
  }

  UL
  {
    margin-bottom: 3px;
    margin-top: 0;
  }

  #nsr
  {
    background-color: #D4DFFF;
  }

  #nsr A
  {
    text-decoration: none;
  }

  #mainbody
  {
    padding: 8px;
  }

  .p_BodyText
  {
    padding: 5px 0;
  }
</style>



<style type="text/css" media="screen">
  BODY
  {
    background-color: #FFFFFF;
  }

  #nsr
  {
    padding: 6px 6px 0 6px;
    border-bottom: none;
    vertical-align: top;
    z-index: 2;
    visibility: visible;
    left: 0;
    top: 0;
    position: absolute;
  }

  #mainbody
  {
    left: 0;
    top: 0;
    margin: 0;
    position: absolute;
    padding: 10px;
    overflow: auto;
    height: 100%;
    z-index: 1;
    background-repeat: no-repeat;
    background-position: bottom right;
    background-attachment: fixed;
  }
</style>

<style type="text/css" media="print">
  #nsr
  {
    visibility: none;
  }

  #mainbody
  {
    overflow: visible;
  }
</style>
<script type="text/javascript" language="JavaScript" src="nonscroll.js"></script>

</head>
<body scroll="no">

<div id="page">



        <div id="content">
          <div id="content-inner">
          



  
          <div id="nsr">
            <table border="0" cellspacing="0" cellpadding="4" width="100%">
              <tr valign="top">
                <td align="left">
  


                  <p class="p_Heading1"><span class="f_Heading1">Parameterized Classes (Templates)</span></p>



  
                </td>
                <td align="right">
                  <a href="introduction.htm" onmouseover="document.images.main.src='button_main_h.gif'" onmouseout="document.images.main.src='button_main.gif'">
                    <img name="main" src="button_main.gif" border=0 alt="Return to Introduction">
                  </a>&nbsp;
    
                  <a href="activeclasses.htm" onmouseover="document.images.prev.src='button_prev_h.gif'" onmouseout="document.images.prev.src='button_prev.gif'">
                    <img name=prev src="button_prev.gif" border=0 alt="Previous page" />
                  </a>&nbsp;
    
    
    
                  <a href="collaboration2.htm" onmouseover="document.images.next.src='button_next_h.gif'" onmouseout="document.images.next.src='button_next.gif'">
                    <img name=next src="button_next.gif" border=0 alt="Next page" />
                  </a>
    
    
                </td>
              </tr>
            </table>
          </div>
          <div id="mainbody">
  


                <p class="p_BodyText"><span class="f_BodyText">Enterprise Architect supports </span><span class="f_BodyText" style="font-style: italic;">template</span><span class="f_BodyText"> or </span><span class="f_BodyText" style="font-style: italic;">parameterized Classes</span><span class="f_BodyText">, which specify parameters that must be defined by any binding <a href="class.htm">Class</a>. A template Class enables its functionality to be reused by any bound Class. If a default value is specified for a parameter, and a binding Class doesn't provide a value for that parameter, the default is used. Parameterized Classes are commonly implemented in C++.</span></p>
<p class="p_BodyText"><span class="f_BodyText">Enterprise Architect imports and generates templated Classes for C++. Template Classes are shown with the parameters in a dashed outline box in the upper right corner of a Class.</span></p>
<p class="p_BodyText"><span class="f_BodyText">To create a parameterized Class, follow the steps below:</span></p>
<ol style="text-indent: 0px; margin-left: 48px; list-style-position: outside;">
<li value=1><span class="f_NumberedList">Display the </span><span class="f_UIControl">Properties</span><span class="f_NumberedList"> dialog for a Class.</span></li>
<li value=2><span class="f_NumberedList">Select the </span><span class="f_UIControl">Detail</span><span class="f_NumberedList"> tab.</span><br>
<span class="f_NumberedList">&nbsp;</span><br>
<img src="paramclassdialog.png" width="383" height="440" border="0" alt="ParamClassDialog"><br>
<span class="f_NumberedList">&nbsp;</span></li>
<li value=3><span class="f_NumberedList">In the </span><span class="f_MenuKeyField">Type</span><span class="f_NumberedList"> field, click on the drop-down arrow and select </span><span class="f_MenuKeyField">Parameterized</span><span class="f_NumberedList">. </span><br>
<span class="f_NumberedList">&nbsp;</span><br>
<span class="f_NumberedList">For an instantiated template, select </span><span class="f_MenuKeyField">Instantiated</span><span class="f_NumberedList"> and add the arguments in the </span><span class="f_MenuKeyField">Arguments</span><span class="f_NumberedList"> field.</span></li>
<li value=4><span class="f_NumberedList">Click on the </span><span class="f_MenuKeyField">Add</span><span class="f_NumberedList"> button and define the required parameters in the </span><span class="f_MenuKeyField">Class Parameter</span><span class="f_NumberedList"> dialog.</span></li>
</ol>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">Notation Example</span></p>
<p class="p_TextIndentedL2"><img src="example%20of%20a%20parameterized%20class.png" width="573" height="310" border="0" alt="Example of a Parameterized Class"></p>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">OMG UML Specification</span></p>
<p class="p_BodyText"><span class="f_BodyText">The OMG UML specification (</span><span class="f_BodyText" style="font-style: italic;">UML Superstructure Specification, v2.1.1, p. 622</span><span class="f_BodyText">) states:</span></p>
<p class="p_OMGText"><span class="f_OMGText">A template is a parameterized element that can be used to generate other model elements using TemplateBinding relationships. The template parameters for the template signature specify the formal parameters that will be substituted by actual parameters (or the default) in a binding.</span></p>




            </div>
          </div>
        </div>



</div>


</body>
</html>
